package com.wuxinwudai.android.beans;


import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * PageRequestResult 类用于接口调用返回分页数据
 * @author 吾心无待 于 2016年6月22日
 */
public final class PageRequestResult extends JsonRequestResult {
    private int total;

    /**
     * 获取总记录项数
     * @return 获取总记录项数
     */
    public int getTotal(){
        return total;
    }

    /**
     * 设置返回的总数据项数
     * @param total 总数据项数
     */
    protected void setTotal(int total){
        this.total = total;
    }
    private JSONObject[] items;

    /**
     * 获取返回的数据行
     * @return 返回数据行
     */
    public JSONObject[] getItems() {
        return items;
    }

    /**
     * 获取响应的数据行
     * @param items 数据行
     */
    private void setItems(JSONObject[] items) {
        this.items = items;
    }

    private PageRequestResult() {}

    /**
     * 根据 http 响应字符串构造 PageRequestResult
     * @param response 响应消息的 JSON 字符串文本
     * @return 返回 PageRequestResult 对象
     * @throws JSONException
     */
    public static PageRequestResult create(String response) throws JSONException {
        JSONObject obj = new JSONObject(response);
        return PageRequestResult.create(obj);
    }
    /**
     * 根据 JSONObject 构造 PageRequestResult
     * @param obj JSONObject 对象
     * @return 返回 PageRequestResult 对象
     * @throws JSONException
     */
    public static PageRequestResult create(JSONObject obj) throws JSONException{
        boolean isOK = obj.getBoolean("ok");
        String msg = obj.getString("message");
        String statusCode = obj.getString("statusCode");
        long time = obj.getLong("time");
        PageRequestResult r = new PageRequestResult();
        r.setOk(isOK);
        r.setStatusCode(statusCode);
        r.setMessage(msg);
        r.setTime(time);
        if (isOK){
            JSONArray jsonArray = obj.getJSONArray("items");
            int length = jsonArray.length();
            JSONObject[] jsonObjects = new JSONObject[length];
            for(int i = 0;i< length ; i++){
                jsonObjects[i] = jsonArray.getJSONObject(i);
            }
            r.setItems(jsonObjects);
            r.setTotal(obj.getInt("total"));
        }
        return r;
    }
}
